# 为什么学习handler
# urllib.request.urlopen(url)
#   不能定制请求头
# urllib.request.Request(url, header, data)
#   可以定制请求头
# Handler
#      定制更高级的请求头(随着业务逻辑的复杂 请求对象的定制已经满足不了我们的需求)
#    动态cookie和代理不能使用请求对象的定制-


# 需求 使用handler来访问百度  获取网页源码

# 1.导入模块
import urllib.request


# 获取url地址
url = 'http://www.baidu.com'


# 获取请求头
headers = {
    'user-agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/127.0.0.0 Safari/537.36'
}

# 定制请求头
request = urllib.request.Request(url=url, headers=headers)


# handler   build_opener    open

# (1)获取handler对象
handler = urllib.request.HTTPHandler()

# (2)获取opener对象
opener = urllib.request.build_opener(handler)

# (3)调用open方法
response = opener.open(request)

content = response.read().decode('utf-8')
print(content)

#

# # 模拟浏览器向服务器发送请求’
# response = urllib.request.urlopen(request)
#
#
# # 获取响应的数据
# content = response.read().decode('utf-8')
# print(content)



